<?php
namespace Admin\Controller;
/**
 * 二维码生成
 * User: linkwhy
 * Date: 2015/10/16
 * Time: 16:15
 */
class CodeController extends AdminController{

    public function index(){
        $list   = $this->lists('code');
        int_to_string($list);
        $this->assign('_list', $list);
        $this->meta_title = '二维码列表';
        $this->display();
    }

    public function add(){
        $this->assign('code_list', $this->getList('board', 'id,num,is_bj,bj_money'));
        $this->meta_title = '创建二维码';
        $this->display('update');
    }

    public function edit(){
        $data = $this->getField('code', 'id,title,code_url,bid', array('id' => I('get.id')));
        $this->meta_title = '修改二维码';
        $this->assign('data', $data);
        $this->assign('code_list', $this->getList('board', 'id,num,is_bj,bj_money'));
        $this->display('update');
    }

    public function createCode(){
        $code = M('code');
        $file_name = 'code_images_';
        $file_url = './Uploads/qrcode/';
        $data = $code->field('id')->group('id desc')->find();
        if($data){
            $file_name = $file_name . (intval($data['id']) + 1);
        }else{
            $file_name = $file_name . 1;
        }
        $complete = $file_url . $file_name . '.png';    //完整路径
        $errorCorrectionLevel = 'L';//容错级别
        $matrixPointSize = 6;//生成图片大小
        CodeController::png('http://www.cqcaitou.com/', $complete, $errorCorrectionLevel, $matrixPointSize, 2);
        //保存数据库
        $c_data['bid'] = I('post.bid');
        $c_data['title'] = $file_name;
        $c_data['code_url'] = $complete;
        $c_data['url'] = C('WEB_INDEX').'index.php?s=/Index/index/code/' . I('post.bid');
        $c_data['ctime'] = time();
        if($code->add($c_data)){
            $this->ajaxReturn(array('status' => true, 'code_url' => $complete));
        }else{
            $this->ajaxReturn(array('status' => false, 'info' => '生成错误，请稍后再试！'));
        }
    }

    /**
     * 生成二维码
     * @param $text             生成二维码的的信息文本
     * @param bool $outfile     是否输出二维码图片 文件，默认否
     * @param int $level        容错率，也就是有被覆盖的区域还能识别，分别是 L（QR_ECLEVEL_L，7%），M（QR_ECLEVEL_M，15%），Q（QR_ECLEVEL_Q，25%），H（QR_ECLEVEL_H，30%）
     * @param int $size         生成图片大小，默认是3；参数$margin表示二维码周围边框空白区域间距值
     * @param int $margin       是否保存二维码并显示
     * @param bool $saveandprint
     */
    public static function png($text, $outfile=false, $level=QR_ECLEVEL_L, $size=3, $margin=4, $saveandprint=false){
        vendor('qrcode.phpqrcode'); //引入生成二维码的类库
        $enc = \QRencode::factory($level, $size, $margin);
        return $enc->encodePNG($text, $outfile, $saveandprint=false);
    }
}